package com.fr.report.script.function;

import com.fr.report.script.Function;
import com.fr.report.script.Function.Type;
import com.fr.report.script.NormalFunction;
import com.fr.report.script.Primitive;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class REGEXP extends NormalFunction
{
  public Object run(Object[] paramArrayOfObject)
  {
    if (paramArrayOfObject.length < 2)
      return Primitive.ERROR_NAME;
    Object localObject1 = paramArrayOfObject[0];
    Object localObject2 = paramArrayOfObject[1];
    int i = 0;
    if (paramArrayOfObject.length > 2)
    {
      localObject3 = paramArrayOfObject[2];
      if (localObject3 instanceof Number)
        i = ((Number)localObject3).intValue();
    }
    Object localObject3 = Pattern.compile(localObject2.toString(), i);
    return Boolean.valueOf(((Pattern)localObject3).matcher(localObject1.toString()).matches());
  }

  public Function.Type getType()
  {
    return Function.TEXT;
  }

  public String getCN()
  {
    return "REGEXP(str, pattern):字符串str是否与正则表达式pattern相匹配。\n示例：\nREGEXP(\"aaaaac\",\"a*c\")等于true。\nREGEXP(\"abc\",\"a*c\")等于false。\n\nREGEXP(str, pattern,  intNumber):字符串str是否与具有给定模式 intNumber的正则表达式pattern相匹配。\n示例：\nCASE_INSENSITIVE = 0         启用不区分大小写的匹配。 默认情况下，不区分大小写的匹配假定仅匹配 US-ASCII 字符集中的字符。可以通过指                                                         定 UNICODE_CASE 标志连同此标志来启用 Unicode 感知的、不区分大小写的匹配。 \nMULTILINE = 1                          启用多行模式。\nDOTALL = 2                               启用 dotall 模式。在 dotall 模式中，表达式 . 可以匹配任何字符，包括行结束符。默认情况下，此表达式不匹配行                                                         结束符。\nUNICODE_CASE = 3               启用 Unicode 感知的大小写折叠。指定此标志后，由 CASE_INSENSITIVE 标志启用时，不区分大小写的匹配将以                                                        符合 Unicode Standard 的方式完成。\nCANON_EQ = 4                         启用规范等价。 指定此标志后，当且仅当其完整规范分解匹配时，两个字符才可视为匹配。\nUNIX_LINES = 5                        启用 Unix 行模式。 在此模式中，.、^ 和 $ 的行为中仅识别 '\\n' 行结束符。\nLITERAL = 6                               启用模式的字面值解析。 指定此标志后，指定模式的输入字符串就会作为字面值字符序列来对待。输入序列中的                                                          元字符或转义序列不具有任何特殊意义。 标志 CASE_INSENSITIVE 和 UNICODE_CASE 在与此标志一起使用时将                                                        对匹配产生影响。其他标志都变得多余了。\nCOMMENTS = 7                        模式中允许空白和注释。 此模式将忽略空白和在结束行之前以 # 开头的嵌入式注释。\n \nREGEXP(\"Aaaaabbbbc\",\"a*b*c\", 3)等于true。\nREGEXP(\"Aaaaabbbbc\",\"a*b*c\", 1)等于false。\n\n";
  }

  public String getEN()
  {
    return "";
  }
}